#ifndef TRIBUTECENTERPANEL_H
#define TRIBUTECENTERPANEL_H

#include <QWidget>
#include "gameplaycenterpanel.h"
#include "countdown.h"
#include <QPushButton>
#include "struct_enum.h"
#include "chooseonepoker.h"
#include "poker.h"
#include "struct_enum.h"
#include <QApplication>
class TributeCenterPanel : public GamePlayCenterPanel
{
    Q_OBJECT
public:
    TributeCenterPanel(QWidget *parent,int make[],QVector<Poker*> & own_poker_v,QVector<Poker*> & other_poker_v,int *last_numer_v ,int *next_number_v);

    void init();//初始化
    void run_tribute();//进贡运行

    //反贡阶段
    void init_rev_tribute();//初始化反贡阶段组件
    void rev_tribute_show();//显示反贡阶段组件
    void hide_rev_tribute();//隐藏反贡阶段组件

    void rev_tribute_success(player_type player);//成功反贡
    void rev_tribute_failed();//没有人反贡

    //进贡阶段
    void add_poker_connection();//添加信号
    void init_tribute();//初始化进贡阶段组件
    bool test_can_out() const;//判断是否能赠送

    //根据进贡的牌序号，选择几张牌，保存到choose_poker中，需要结合isChoosePoker和isTimeOutChoose使用
    void choose_pokers(int index);

    //与自己相关的赠送和回赠
    int tribute(player_type toPlayer);//将一张牌送给toPlayer，返回进贡的牌序号
    //将选择的几张牌放入出牌区中间，等待选择
    void gift_to_center(player_type toPlayer);
    //将回贡中的一张牌送至其他玩家
    void center_poker_to_other(int index,player_type toPlayer);
    //从回贡的牌中选一张，并加入牌中，返回选择的牌的序号
    int choose_one_to_my(player_type sender,QVector<int> choose_poker);
    //与自己无关的赠送和回赠
    void tribute(player_type sender,player_type receiver,QVector<int> pokers);
    void gift(player_type sender,player_type receiver,int index);

public slots:
    void clicked_rev_tribute_btn();//点击了反贡按钮
    void clicked_norev_tribute_btn();//点击了不反贡按钮
    void rev_tribute_timeout();//反贡时间到了
    void gift_timeout();//选择赠送的时间到了
    void add_out_poker(bool isUp,Poker * poker);//添加一张牌
    void clicked_out_poker();//点击回贡按钮
private:
    CountDown *cd;


    //反贡阶段
    QLabel * rev_tribute_label;//反贡提示标签
    QPushButton * rev_tribute_btn;//反贡按钮
    QPushButton * no_rev_tribute_btn;//不反贡按钮

    QLabel * rev_tribute_success_label;//反贡成功标签
    bool isClickedRev;//反贡按钮被点击提示
    bool isClickedNoRev;//不反贡按钮被点击提示
    bool isTimeOutRev;//时钟时间到了
    bool isSuccess;//是否成功反贡

    //进贡阶段
    QLabel * tribute_label;//进贡提示标签
    QPushButton * out_poker;//将牌给别人按钮
    ChooseOnePoker * choose_one_Poker;//选择一张牌的对话框

        //判断回贡阶段的条件是否到了
    bool isChoosePoker;//是否选择
    bool isTimeOutChoose;//选择时钟时间到了
    QVector<int> choose_poker;//选择的牌

        //判断所选牌是否能回贡，所需变量
    QList<Poker*> own_out_poker;//自己回贡的牌排序
    int lower_equal_10_number;//自己牌中小于等于10的张数
    int need_out_number;//需要捐赠的牌的个数

    //
    QList<Poker*> center_poker;
};
#endif // TRIBUTECENTERPANEL_H
